//#include <iostream>
//using namespace std;
//
//const int N = 1e5 + 10;
//
//int e[N],ne[N],pre[N],id,h,mp[N];
//
//void push_front(int x){
//	id++;
//	mp[x] = id;
//	e[id] = x;
//	pre[id] = h;
//	ne[id] = ne[h];
//	pre[ne[id]] = id;
//	ne[h] = id;
//}
//
//int find(int x){
//	return mp[x];
//}
//
//void print(){
//	for(int i = ne[h];i;i = ne[i]){
//		cout << e[i] << " ";
//	}
//	cout << endl;
//}
//
//void insert_back(int p,int x){
//	id++;
//	e[id] = x;
//	mp[x] = id;
//	pre[ne[p]] = id;
//	ne[id] = ne[p];
//	pre[id] = p;
//	ne[p] = id;
//}
//
//void insert_front(int p,int x){
//	id++;
//	e[id] = x;
//	mp[x] = id;
//	ne[pre[p]] = id;
//	pre[id] = pre[p];
//	ne[id] = p;
//	pre[p] = id;
//} 
//
//int main(){
//	for(int i = 1;i <= 5;i++){
//		push_front(i);
//		print();
//	}
//	
//	cout << find(3) << endl; 
//	cout << find(5) << endl; 
//	cout << find(10) << endl; 
//	
//	insert_back(3,10);
//	print();
//	insert_front(3,33);
//	print();
//	return 0;
//} 

#include <iostream>
using namespace std;

const int N = 1e6 + 10;
int ne[N],e[N];

int main(){
	int n;
	cin >> n;
	for(int i = 1;i <= n;i++){
		int x;
		e[i] = i;
		cin >> x;
		ne[i] = x;
	}
	int x;
	cin >> x;
	ne[0] = x;
	for(int i = ne[0];i;i = ne[i]){
		cout << e[i] << endl;
	}
	return 0;
}
